package File_IO;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-02-07
 * Time: 16:15
 */
public class IODemo3 {
    public static void main(String[] args) throws IOException {
        // 实现了Closeable接口得类才可以放入try() 括号中被自动关闭, 不需要手动close
        try (OutputStream outputStream = new FileOutputStream("e:/test.txt");
        ) {

            // 第一个版本 一次写入一个字节
            outputStream.write(61);
            outputStream.write(62);
            outputStream.write(63);
            outputStream.write(64);
            outputStream.write(65);
            outputStream.write(97);

            // 中文字符需要先转换为字节数组才可以进行写入
            outputStream.write("zhebushizhende ".getBytes());
            outputStream.write("\r\n".getBytes()); // 回车换行操作
            outputStream.write("这不是真的".getBytes());
        }

        //outputStream.close();  //

        // 对于OutputStream来说, 默认情况下, 打开一个文件, 会先清空文件原有得内容
        // 若想在后面"追加写" , 流对象提供了一个"追加写"对象

        // PCB中有一个重要属性 - 文件描述符表(相当于一个数组), 记录了该进程打开了那些文件
        // (即使一个进程有多个线程多个PCB 也没关系, 这些PCB共用同一个文件描述符表
        // 如果文件不及时close, 如果占满了之后, 该数组无法自动扩容且存在上限,下次将会无法打开文件
    }
}
